package day10.yichang.demo;
//异常的作用
//1定义bug
//2可以作为一种特殊的返回值

public class Exceptiondemo2 {
    public static void main(String[] args) {

        try{
            System.out.println(div(10,0));
            System.out.println("程序成功执行");
        }catch(Exception e){//没有异常自然不会做下面的东西

            e.printStackTrace();
            System.out.println("程序执行失败");
        }

    }

    //做一个整除的方法
    public static int div(int a,int b)throws Exception{
 /*为什么使用RuntimeException不需要在方法签名中声明？
非检查型异常：RuntimeException及其实现类（如NullPointerException, IndexOutOfBoundsException等）
属于非检查型异常。这些异常通常表示应用程序中的编程错误，如空指针访问、数组越界等。由于这类错误被认为是应该避免的编程错误，因此Java编译器不要求在方法签名中声明它们。
检查型异常：Exception及其大部分子类（如IOException, SQLException等）属于检查型异常。这类异常通常是应用程序可以预见并可能恢复的情况，
比如文件读写错误、数据库连接问题等。Java编译器要求在方法签名中声明这些异常，或者在方法内部处理它们。
*/
        if(b==0)
        {
          throw new RuntimeException("除数不能为0");//返回一个运行异常给上层并且用中文告知异常名字为除数不能为0
            //返回一个编译异常给上层
         // throw new Exception("除数不能为0");
        }
        return a/b;
    }
}
